<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateRbacPowerPagesTable extends Migration {
    /**
     * Run the migrations.
     * @return void
     */
    public function up() {
        Schema::create('rbac_power_pages', function (Blueprint $table) {
            $table->increments('id')->comment('表备注：权限表');
            $table->string('title')->comment('名称');
            $table->tinyInteger('level')->comment('目录等级,1:表示目录，2:表示页面,3:表示api接口');
            $table->integer('pid')->default(0)->comment('上级目录id,对应本表id,一级目录该值为0');
            $table->string('api_uri')->default('')->comment('api接口路由,e.g,api/user/{id}/posts');
            $table->string('api_method', 50)->default('')->comment('api的请求方法,POST,GET等，大写');
            $table->string('ext')->default('')->comment('额外扩展信息');
            $table->string('desc')->default('')->comment('描述');
            $table->tinyInteger('status')->default(1)->comment('状态,1:启用，2:不启用');
            $table->integer('order')->default(1)->comment('排序,值越小越靠前');
            $table->tinyInteger('api_match_type')->default(0)->comment("api匹配类型，0：laravel路由，1：绝对匹配 ,3：正则匹配");
    
            $table->string('route_name')->default('')->comment('前端路由名称');
            $table->string('props', 800)->default('{}')->comment('路由props属性,json存储');
            $table->tinyInteger('meta_hide_in_bread')->default(0)->comment('设为1后此级路由将不会出现在面包屑中，示例看QQ群路由配置');
            $table->tinyInteger('meta_hide_in_menu')->default(0)->comment('设为1后在左侧菜单不会显示该页面选项');
            $table->tinyInteger('meta_not_cache')->default(1)->comment('设为true后页面在切换标签后不会缓存，如果需要缓存，无需设置这个字段，而且需要设置页面组件name属性和路由配置的name一致');
            $table->string('meta_access')->default('')->comment('可访问该页面的权限数组，当前路由设置的权限会影响子路由');
            $table->string('meta_icon')->default('')->comment("该页面在左侧菜单、面包屑和标签导航处显示的图标，如果是自定义图标，需要在图标名称前加下划线'_'");
            $table->string('meta_before_close_name')->default('')->comment("设置该字段，则在关闭当前tab页时会去'@/router/before-close.js'里寻找该字段名对应的方法，作为关闭前的钩子函数");
            $table->string('meta_pinyin')->default('')->comment("拼音");
            $table->tinyInteger('meta_show_always')->default(0)->comment("是否总是显示在导航栏，目录要设置这个为1，才会显示");
            
            $table->dateTime('created_at')->nullable()->default(null);
            $table->dateTime('updated_at')->nullable()->default(null);
            $table->tinyInteger('deleted')->default(0)->comment('是否删除,1:是,0:否');
        });
    }
    
    /**
     * Reverse the migrations.
     * @return void
     */
    public function down() {
        Schema::dropIfExists('rbac_power_pages');
    }
}
